/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package elaprendiz.ventanas.paneles;

import elaprendiz.modelbd.DetalleCompra;
import elaprendiz.modelbd.Producto;
import elaprendiz.modelgui.ModeloTablaDetalleCompra;
import elaprendiz.modelgui.ModeloTablaProducto;
import elaprendiz.util.CeldaAccionEditor;
import elaprendiz.ventanas.buscar.BuscarProducto;
import java.awt.Dimension;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import javax.swing.JTable;

/**
 *
 * @author elaprendiz <http://www.elaprendiz.net63.net>
 */
public class PanelAccion extends javax.swing.JPanel {

    /**
     * Creates new form PanelAccion
     */
    private JInternalFrame ifr;
    private JTable tabla;
    private ModeloTablaDetalleCompra mtdc;
    private int indexFila = -1;
    private CeldaAccionEditor cae;
    public PanelAccion(JInternalFrame ifr) {
        initComponents();
        this.ifr = ifr;
        
    }
    
    public void setCeldaEditor(CeldaAccionEditor cae)
    {
        this.cae = cae;
    }
    
    public void setTabla(JTable tabla)
    {
        this.tabla = tabla;
        mtdc = (ModeloTablaDetalleCompra)this.tabla.getModel();
    }
    
    public void setIndexFila(int fila){
        this.indexFila = fila;
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        bntAgregar = new javax.swing.JButton();
        bntEliminar = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();

        setLayout(new java.awt.GridLayout(1, 0));

        bntAgregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/elaprendiz/resources/agregar.png"))); // NOI18N
        bntAgregar.setBorder(null);
        bntAgregar.setBorderPainted(false);
        bntAgregar.setContentAreaFilled(false);
        bntAgregar.setPreferredSize(new java.awt.Dimension(24, 24));
        bntAgregar.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/elaprendiz/resources/agregar_over.png"))); // NOI18N
        bntAgregar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bntAgregarActionPerformed(evt);
            }
        });
        add(bntAgregar);

        bntEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/elaprendiz/resources/eliminar.png"))); // NOI18N
        bntEliminar.setBorder(null);
        bntEliminar.setBorderPainted(false);
        bntEliminar.setContentAreaFilled(false);
        bntEliminar.setPreferredSize(new java.awt.Dimension(24, 24));
        bntEliminar.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/elaprendiz/resources/eliminar_over.png"))); // NOI18N
        bntEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bntEliminarActionPerformed(evt);
            }
        });
        add(bntEliminar);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/elaprendiz/resources/save_32.png"))); // NOI18N
        jButton1.setContentAreaFilled(false);
        jButton1.setPreferredSize(new java.awt.Dimension(24, 24));
        jButton1.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/elaprendiz/resources/save_over.png"))); // NOI18N
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        add(jButton1);
    }// </editor-fold>//GEN-END:initComponents

    private void bntAgregarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bntAgregarActionPerformed
        if(this.tabla.getSelectedRow() != -1)  
        {
            this.indexFila = this.tabla.getSelectedRow();
        }
        BuscarProducto pvc = new BuscarProducto(ModeloTablaProducto.COMPRA); 
        pvc.setPreferredSize(new Dimension(720, 380));
          JOptionPane.showInternalOptionDialog(ifr, pvc, "Buscar Producto: ",JOptionPane.OK_CANCEL_OPTION,
                                            JOptionPane.QUESTION_MESSAGE, null, new Object[]{pvc.getLbAviso()},null);
       System.out.println("Fila Actual: "+this.indexFila);
       System.out.println("Num Fila: "+this.tabla.getRowCount());
          if(pvc.getProducto() != null)
        {     
            
            /**
             * coreegir cuamdo se borra la primera fila nos genera un dato nulo.
             */
            
            if(!mtdc.existe(pvc.getProducto()))
            {
                ((DetalleCompra)mtdc.getFila(this.indexFila )).setIdProducto(pvc.getProducto());
                ((DetalleCompra)mtdc.getFila(this.indexFila )).setCantidad(1);
                ((DetalleCompra)mtdc.getFila(this.indexFila )).setDescuento(0.0);
                ((DetalleCompra)mtdc.getFila(this.indexFila )).setImporte(1*pvc.getProducto().getCosto());
                //bntEliminar.setEnabled(true);                
                this.tabla.changeSelection(this.indexFila , 1, true, false);
                mtdc.contarItems();
                cae.lanzarDetencionEdicion();
                //((CellEditorSpinnerCompra)this.tabla.getCellEditor(this.indexFila , 1)).getSpinner().requestFocus();
                
            }else{
                JOptionPane.showInternalMessageDialog(ifr, "El Producto: "+pvc.getProducto().getNombre()+
                                                            " ya ha sido agregado", "Producto Duplicado", JOptionPane.WARNING_MESSAGE);
            }
            
        }
            
    }//GEN-LAST:event_bntAgregarActionPerformed

    private void bntEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bntEliminarActionPerformed
        if(this.tabla.getSelectedRow() != -1)  
        {
            this.indexFila = this.tabla.getSelectedRow();
        }
        if(((DetalleCompra)mtdc.getFila(this.indexFila)).getIdProducto().getPrimaryKey() != null)
        {
            if(this.tabla.getRowCount() > 1)
           {
                if(this.indexFila < this.tabla.getRowCount()-1)
                {
                    int opc = JOptionPane.showInternalConfirmDialog(ifr, "¿Realmente desea quitar este producto?", "Quitar Producto", JOptionPane.YES_NO_CANCEL_OPTION);
                    if(opc == JOptionPane.OK_OPTION)
                    {
                        ((DetalleCompra)mtdc.getFila(this.indexFila)).setIdProducto(new Producto());
                        mtdc.quitarFila(this.indexFila);  
                        mtdc.contarItems();
                        cae.lanzarDetencionEdicion();
                        return;
                    }
                }
            }
             if((this.indexFila == 0 && this.tabla.getRowCount()==1) || (this.indexFila == this.tabla.getRowCount()-1 && this.tabla.getRowCount()>1))
            {
                int opc = JOptionPane.showInternalConfirmDialog(ifr, "¿Realmente desea quitar este producto?", "Quitar Producto", JOptionPane.YES_NO_CANCEL_OPTION);
                if(opc == JOptionPane.OK_OPTION)
                {
                    //((DetalleCompra)mtdc.getFila(this.indexFila)).setIdProducto(new Producto());
                    mtdc.remplazarProducto(new Producto(), indexFila);    
                    mtdc.contarItems();
                    cae.lanzarDetencionEdicion();
                    return;
                }
            }
        }
        
    }//GEN-LAST:event_bntEliminarActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        if(this.indexFila  == this.tabla.getRowCount()-1)
        {
            if(((DetalleCompra)mtdc.getFila(this.indexFila )).getIdProducto().getPrimaryKey() != null)
            {
                if(((DetalleCompra)mtdc.getFila(this.indexFila )).getCantidad()>0)
                {
                    mtdc.agregar(new Producto());
                }else{
                    JOptionPane.showInternalMessageDialog(ifr,"La cantidad debe ser mayor que cero.", 
                            "Error: cantidad cero", JOptionPane.ERROR_MESSAGE);

                }
            }else{
                JOptionPane.showInternalMessageDialog(ifr,"Primero debe seleccionar un Producto.", 
                            "Error: No ha seleccionado un producto.", JOptionPane.ERROR_MESSAGE);

            }
        }
    }//GEN-LAST:event_jButton1ActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton bntAgregar;
    private javax.swing.JButton bntEliminar;
    private javax.swing.JButton jButton1;
    // End of variables declaration//GEN-END:variables
}
